home *** CD-ROM | disk | FTP | other *** search
/ All for Cell Phones: Sony Ericsson / Sony-Ericsson 2004.iso / Java / Calc / MicroCalc.jar / CalcManager.class (.txt) < prev    next >
Encoding:
Java Class File  |  2001-09-07  |  3.2 KB  |  239 lines

  1. public class CalcManager {
  2.    public static StringBuffer currVal;
  3.    public static long currValL = MathFP.toFP("0");
  4.    public static boolean hasDecimal;
  5.    public static boolean decimal;
  6.    private static int digCounter = 0;
  7.    public static boolean negative = false;
  8.    public static int[] numbers;
  9.    public static boolean error = false;
  10.    public static boolean isNewValue = true;
  11.    public static long memory = MathFP.toFP("0");
  12.  
  13.    public static void addCurrent(int var0) {
  14.       if (isNewValue && var0 == 10 && digCounter == 0) {
  15.          currVal.delete(0, currVal.length());
  16.          currVal.append("0");
  17.          currVal.append(".");
  18.          hasDecimal = true;
  19.          negative = false;
  20.          digCounter = 1;
  21.       } else if (digCounter < 8) {
  22.          if (var0 == 10 && !hasDecimal) {
  23.             currVal.append(".");
  24.             hasDecimal = true;
  25.             if (digCounter == 0) {
  26.                ++digCounter;
  27.             }
  28.          } else if (digCounter == 0) {
  29.             if (var0 != 0) {
  30.                currVal.delete(0, currVal.length());
  31.                negative = false;
  32.                currVal.append(Integer.toString(var0));
  33.                ++digCounter;
  34.             } else {
  35.                currVal.delete(0, currVal.length());
  36.                negative = false;
  37.                currVal.append(Integer.toString(var0));
  38.             }
  39.          } else if (var0 != 10) {
  40.             currVal.append(Integer.toString(var0));
  41.             ++digCounter;
  42.          }
  43.       }
  44.  
  45.    }
  46.  
  47.    public static void clearCurrValue() {
  48.       currVal.delete(0, currVal.length());
  49.       currVal.append("0");
  50.       digCounter = 0;
  51.       hasDecimal = false;
  52.       negative = false;
  53.       isNewValue = true;
  54.       currValL = MathFP.toFP("0");
  55.    }
  56.  
  57.    public static void delLast() {
  58.       if (digCounter > 0 && currVal.length() > 0) {
  59.          if (currVal.charAt(currVal.length() - 1) != '.') {
  60.             --digCounter;
  61.          }
  62.  
  63.          if (currVal.charAt(currVal.length() - 1) == '.') {
  64.             hasDecimal = false;
  65.          }
  66.  
  67.          currVal.deleteCharAt(currVal.length() - 1);
  68.          if (digCounter == 0) {
  69.             currVal.delete(0, currVal.length());
  70.             currVal.append("0");
  71.             negative = false;
  72.          }
  73.       } else if (digCounter == 0) {
  74.          currVal.delete(0, currVal.length());
  75.          currVal.append("0");
  76.          negative = false;
  77.       }
  78.  
  79.       if (digCounter == 1 && getCurrValueL() == MathFP.toFP("0")) {
  80.          digCounter = 0;
  81.          hasDecimal = false;
  82.          currVal.delete(0, currVal.length());
  83.          currVal.append("0");
  84.          currValL = MathFP.toFP("0");
  85.          negative = false;
  86.       }
  87.  
  88.       currValL = MathFP.toFP(getCurrValue());
  89.    }
  90.  
  91.    public static String getCurrValue() {
  92.       String var0 = currVal.toString();
  93.       int var1 = 0;
  94.       int var2 = var0.length();
  95.       if (var0.indexOf(".") >= 8) {
  96.          error = true;
  97.          return "0";
  98.       } else {
  99.          if (var2 < 8) {
  100.             var1 = var2;
  101.          } else if (var0.indexOf(".") < 8) {
  102.             if (var2 >= 9) {
  103.                var1 = 9;
  104.             } else {
  105.                var1 = 8;
  106.             }
  107.          }
  108.  
  109.          var0 = var0.substring(0, var1);
  110.          if (negative) {
  111.             var0 = "-" + var0;
  112.          }
  113.  
  114.          return var0;
  115.       }
  116.    }
  117.  
  118.    public static long getCurrValueL() {
  119.       String var0 = currVal.toString();
  120.       if (negative) {
  121.          var0 = "-" + var0;
  122.       }
  123.  
  124.       return MathFP.toFP(var0);
  125.    }
  126.  
  127.    public static String getCurrValueParse() {
  128.       String var0 = currVal.toString();
  129.       int var1 = 0;
  130.       int var2 = var0.length();
  131.       if (var0.indexOf(".") >= 8) {
  132.          error = true;
  133.          return "0";
  134.       } else {
  135.          if (var2 < 8) {
  136.             var1 = var2;
  137.          } else if (var0.indexOf(".") < 8) {
  138.             if (var2 >= 9) {
  139.                var1 = 9;
  140.             } else {
  141.                var1 = 8;
  142.             }
  143.          }
  144.  
  145.          var0 = var0.substring(0, var1);
  146.          return var0;
  147.       }
  148.    }
  149.  
  150.    public static void initCalc() {
  151.       isNewValue = true;
  152.       error = false;
  153.       hasDecimal = false;
  154.       negative = false;
  155.       currValL = MathFP.toFP("0");
  156.       currVal = new StringBuffer();
  157.       currVal.append("0");
  158.       numbers = new int[16];
  159.       int var0 = numbers.length;
  160.  
  161.       for(int var1 = 0; var1 < var0; ++var1) {
  162.          numbers[var1] = -1;
  163.       }
  164.  
  165.    }
  166.  
  167.    public static void parseCurrValue() {
  168.       StringBuffer var0 = new StringBuffer(getCurrValueParse());
  169.       int var1 = numbers.length;
  170.  
  171.       for(int var2 = 0; var2 < var1; ++var2) {
  172.          numbers[var2] = -1;
  173.       }
  174.  
  175.       int var3 = numbers.length - 1;
  176.  
  177.       for(int var4 = var0.length() - 1; var4 >= 0; --var4) {
  178.          if (var0.charAt(var4) == '.') {
  179.             numbers[var3] = 10;
  180.          } else if (var3 % 2 == 0) {
  181.             numbers[var3 - 1] = Character.digit(var0.charAt(var4), 10);
  182.             --var3;
  183.          } else {
  184.             numbers[var3] = Character.digit(var0.charAt(var4), 10);
  185.          }
  186.  
  187.          --var3;
  188.       }
  189.  
  190.    }
  191.  
  192.    public static void removeZeros() {
  193.       for(int var0 = currVal.length() - 1; currVal.charAt(var0) != '.'; --var0) {
  194.          if (currVal.charAt(currVal.length() - 1) == '0') {
  195.             currVal.deleteCharAt(currVal.length() - 1);
  196.          }
  197.       }
  198.  
  199.       if (currVal.charAt(currVal.length() - 1) == '.') {
  200.          currVal.deleteCharAt(currVal.length() - 1);
  201.       }
  202.  
  203.    }
  204.  
  205.    public static int setCurrValue(String var0) {
  206.       currVal.delete(0, currVal.length());
  207.       currVal.append(var0);
  208.       negative = false;
  209.       if (currVal.charAt(0) == '-') {
  210.          negative = true;
  211.          currVal.deleteCharAt(0);
  212.       }
  213.  
  214.       int var1 = currVal.length();
  215.  
  216.       for(int var2 = 0; var2 < var1; ++var2) {
  217.          if (currVal.charAt(var2) == '.') {
  218.             if (var2 > 8) {
  219.                error = true;
  220.                return 0;
  221.             }
  222.  
  223.             if (decimal && var2 >= 8) {
  224.                error = true;
  225.                return 0;
  226.             }
  227.  
  228.             if (decimal) {
  229.                return 7 - var2;
  230.             }
  231.  
  232.             return 1;
  233.          }
  234.       }
  235.  
  236.       return 0;
  237.    }
  238. }
  239.